package com.sui.bigdata.flink.sql.function.scalar;
import org.apache.flink.table.functions.ScalarFunction;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author YongChen
 * @date 2019/8/26 19:59
 * @description
 * @email yong_chen@sui.com
 */
public class P1Time extends ScalarFunction {
    public Boolean eval(String dt, String dt1, String dt2) throws Exception {
        {
            //updateTime   2019-08-26 15:25:48
            //取第1步中newaction = ’Verify_info_basic‘ and etype='click'的所有数据，取这些数据中最新的dt，作为dt1，再取次新的dt，作为dt2；
            // 如仅有1条符合的数据，即只有1个dt，则以下步骤中条件‘dt1和dt2之间’替换成‘dt之前所有数据’；
            // dt为空时过滤数据；比较大小时，将dt处理为精确到秒级的时间格式，精度不够不过滤，正常比较大小。
            // updateTime是当前系统时间
            try {
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                if ( !NotBlank.eval(dt) || !NotBlank.eval(dt1)){
                    return false;
                }
                String updateTime= sdf2.format(System.currentTimeMillis());
                Calendar cal = Calendar.getInstance();
                cal.setTime(new Date(sdf2.parse(updateTime).getTime()));
                cal.add(Calendar.DATE, -30);
                String updateTime30Ago = sdf2.format(cal.getTime());
                String updateTime30Ago00 = updateTime30Ago.substring(0,10) + " 00:00:00";
                if(dt1.compareTo(updateTime30Ago00)<0){
                    return false;
                }
                if (dt2.compareTo(updateTime30Ago00)>=0) {
                    return dt1.compareTo(dt)>=0 && dt.compareTo(dt2)>=0;
                }else{
                    return dt1.compareTo(dt)>=0 && dt.compareTo(updateTime30Ago00)>=0;
                }
            }catch (Exception e){
                return false;
            }

        }
    }

}
